home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / assembler / progasm1.lha / SORGENTI3 / LEZIONE7v1.s < prev    next >
Text File  |  1994-11-28  |  14KB  |  487 lines

  1.  
  2. ; Lezione7v1.s    PRIORITA` SPRITE E PLAYFIELD
  3. ;        In questo listato vengono mostrate le priorita` tra sprite
  4. ;        e playfield. Gli sprites attraversano quattro linee
  5. ;        sullo schermo. Ogni volta che attraversano una linea
  6. ;        le priorita` vengono cambiate mediante la copperlist.
  7.  
  8.     SECTION    CiriCop,CODE
  9.  
  10. Inizio:
  11.     move.l    4.w,a6        ; Execbase
  12.     jsr    -$78(a6)    ; Disable
  13.     lea    GfxName(PC),a1    ; Nome lib
  14.     jsr    -$198(a6)    ; OpenLibrary
  15.     move.l    d0,GfxBase
  16.     move.l    d0,a6
  17.     move.l    $26(a6),OldCop    ; salviamo la vecchia COP
  18.  
  19. ;    Puntiamo la PIC con il solito metodo
  20.  
  21.     MOVE.L    #PIC,d0
  22.     LEA    BPLPOINTERS,A1
  23.     MOVEQ    #3-1,D1
  24. POINTBP:
  25.     move.w    d0,6(a1)
  26.     swap    d0
  27.     move.w    d0,2(a1)
  28.     swap    d0
  29.     ADD.L    #40*256,d0
  30.     addq.w    #8,a1
  31.     dbra    d1,POINTBP
  32.  
  33. ;    Puntiamo gli sprite
  34.  
  35.     MOVE.L    #MIOSPRITE0,d0        ; indirizzo dello sprite in d0
  36.     LEA    SpritePointers,a1    ; Puntatori in copperlist
  37.     move.w    d0,6(a1)
  38.     swap    d0
  39.     move.w    d0,2(a1)
  40.     MOVE.L    #MIOSPRITE1,d0        ; indirizzo dello sprite in d0
  41.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  42.     move.w    d0,6(a1)
  43.     swap    d0
  44.     move.w    d0,2(a1)
  45.     MOVE.L    #MIOSPRITE2,d0        ; indirizzo dello sprite in d0
  46.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  47.     move.w    d0,6(a1)
  48.     swap    d0
  49.     move.w    d0,2(a1)
  50.     MOVE.L    #MIOSPRITE3,d0        ; indirizzo dello sprite in d0
  51.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  52.     move.w    d0,6(a1)
  53.     swap    d0
  54.     move.w    d0,2(a1)
  55.     MOVE.L    #MIOSPRITE4,d0        ; indirizzo dello sprite in d0
  56.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  57.     move.w    d0,6(a1)
  58.     swap    d0
  59.     move.w    d0,2(a1)
  60.     MOVE.L    #MIOSPRITE5,d0        ; indirizzo dello sprite in d0
  61.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  62.     move.w    d0,6(a1)
  63.     swap    d0
  64.     move.w    d0,2(a1)
  65.     MOVE.L    #MIOSPRITE6,d0        ; indirizzo dello sprite in d0
  66.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  67.     move.w    d0,6(a1)
  68.     swap    d0
  69.     move.w    d0,2(a1)
  70.     MOVE.L    #MIOSPRITE7,d0        ; indirizzo dello sprite in d0
  71.     addq.w    #8,a1            ; prossimi SPRITEPOINTERS
  72.     move.w    d0,6(a1)
  73.     swap    d0
  74.     move.w    d0,2(a1)
  75.  
  76.     move.l    #COPPERLIST,$dff080    ; nostra COP
  77.     move.w    d0,$dff088        ; START COP
  78.     move.w    #0,$dff1fc        ; NO AGA!
  79.     move.w    #$c00,$dff106        ; NO AGA!
  80.  
  81.  
  82. mouse:
  83.     cmpi.b    #$ff,$dff006    ; Linea 255?
  84.     bne.s    mouse
  85.  
  86.     bsr.s    MuoviSprites    ; Muove in basso gli sprites
  87.  
  88. Aspetta1:
  89.     cmpi.b    #$ff,$dff006    ; linea 255?
  90.     beq.s    Aspetta1
  91.  
  92.  
  93.     btst    #6,$bfe001    ; mouse premuto?
  94.     bne.s    mouse
  95.  
  96.  
  97.     move.l    OldCop(PC),$dff080    ; Puntiamo la cop di sistema
  98.     move.w    d0,$dff088        ; facciamo partire la vecchia cop
  99.  
  100.     move.l    4.w,a6
  101.     jsr    -$7e(a6)    ; Enable
  102.     move.l    gfxbase(PC),a1
  103.     jsr    -$19e(a6)    ; Closelibrary
  104.     rts
  105.  
  106. ;    Dati
  107.  
  108. GfxName:
  109.     dc.b    "graphics.library",0,0
  110.  
  111. GfxBase:
  112.     dc.l    0
  113.  
  114. OldCop:
  115.     dc.l    0
  116.  
  117. ; questa routine muove gli 8 sprites in basso:
  118. ; gli sprites vengono spostati una volta si ed una no. Per questo
  119. ; si usa la variabile flag. Ogni volta che la routine viene eseguita
  120. ; la variabile viene cambiata di stato con l'istruzione not:
  121. ; se e` a 0, viene posta a $ffff
  122. ; se e` a $ffff, viene posta a 0
  123. ; se la variabile passa da 0 a $ffff, gli sprite non vengono mossi
  124. ; Tutti gli sprites hanno la stessa altezza
  125.  
  126. Muovisprites:
  127.     not.w    flag
  128.     bne.w    esci
  129.  
  130. ; muove lo sprite 0
  131.  
  132.     addq.w    #1,altezza
  133.     cmp.w    #300,altezza
  134.     blo.s    no_bordo    ; e` arrivato al bordo inferiore?
  135.     move.w    #$2c,altezza    ; se si lo rimette in alto
  136.  
  137. no_bordo:
  138.     move.w    altezza(PC),d0
  139.  
  140.     CLR.B    VHBITS0        ; azzera i bit 8 delle posizioni verticali
  141.     MOVE.b    d0,VSTART0    ; copia i bit da 0 a 7 in VSTART
  142.     BTST.l    #8,D0        ; la posizione e` maggiore di 255 ?
  143.     BEQ.S    NOBIGVSTART    ; se no vai oltre infatti il bit e` stato gia` 
  144.                 ; azzerato con la CLR.b VHBITS
  145.  
  146.     BSET.b    #2,VHBITS0    ; altrimenti metti a 1 il bit 8 della posizione
  147.                 ; verticale di partenza
  148. NOBIGVSTART:
  149.     ADDQ.W    #8,D0        ; Aggiungi la lunghezza dello sprite per
  150.                 ; determinare la posizione finale (VSTOP)
  151.     move.b    d0,VSTOP0    ; Muovi i bit da 0 a 7 in VSTOP
  152.     BTST.l    #8,D0        ; la posizione e` maggiore di 255 ?
  153.     BEQ.S    NOBIGVSTOP    ; se no vai oltre infatti il bit e` stato gia` 
  154.                 ; azzerato con la CLR.b VHBITS
  155.  
  156.     BSET.b    #1,VHBITS0    ; altrimenti metti a 1 il bit 8 della posizione
  157.                 ; verticale di fine dello sprite
  158. NOBIGVSTOP:
  159.  
  160. ; copia l'altezza sugli altri sprites
  161.  
  162.     move.b    vstart0,vstart1    ; copia vstart
  163.     move.w    vstop0,vstop1    ; copia VSTOP e VHBITS
  164.  
  165.     move.b    vstart0,vstart2    ; copia vstart
  166.     move.w    vstop0,vstop2    ; copia VSTOP e VHBITS
  167.  
  168.     move.b    vstart0,vstart3    ; copia vstart
  169.     move.w    vstop0,vstop3    ; copia VSTOP e VHBITS
  170.  
  171.     move.b    vstart0,vstart4    ; copia vstart
  172.     move.w    vstop0,vstop4    ; copia VSTOP e VHBITS
  173.  
  174.     move.b    vstart0,vstart5    ; copia vstart
  175.     move.w    vstop0,vstop5    ; copia VSTOP e VHBITS
  176.  
  177.     move.b    vstart0,vstart6    ; copia vstart
  178.     move.w    vstop0,vstop6    ; copia VSTOP e VHBITS
  179.  
  180.     move.b    vstart0,vstart7    ; copia vstart
  181.     move.w    vstop0,vstop7    ; copia VSTOP e VHBITS
  182.  
  183. esci:
  184.     rts
  185.  
  186. altezza:
  187.     dc.w    $2c
  188. flag:
  189.     dc.w    0
  190.  
  191.  
  192.     SECTION    GRAPHIC,DATA_C
  193.  
  194. COPPERLIST:
  195. SpritePointers:
  196.     dc.w    $120,0,$122,0,$124,0,$126,0,$128,0 ; SPRITE
  197.     dc.w    $12a,0,$12c,0,$12e,0,$130,0,$132,0
  198.     dc.w    $134,0,$136,0,$138,0,$13a,0,$13c,0
  199.     dc.w    $13e,0
  200.  
  201.     dc.w    $8E,$2c81    ; DiwStrt
  202.     dc.w    $90,$2cc1    ; DiwStop
  203.     dc.w    $92,$38        ; DdfStart
  204.     dc.w    $94,$d0        ; DdfStop
  205.     dc.w    $102,0        ; BplCon1
  206.     dc.w    $104,0        ; BplCon2
  207.     dc.w    $108,0        ; Bpl1Mod
  208.     dc.w    $10a,0        ; Bpl2Mod
  209.  
  210.             ; 5432109876543210
  211.     dc.w    $100,%0011001000000000    ; bit 12 acceso!! 3 bitplane lowres
  212.  
  213. BPLPOINTERS:
  214.     dc.w $e0,0,$e2,0    ;primo     bitplane
  215.     dc.w $e4,0,$e6,0
  216.     dc.w $e8,0,$ea,0
  217.  
  218.     dc.w    $180,$000    ; color0    ; sfondo nero
  219.     dc.w    $182,$ff0
  220.     dc.w    $184,$800
  221.     dc.w    $186,$0f0
  222.     dc.w    $188,$ff0
  223.     dc.w    $18a,$f00
  224.     dc.w    $18c,$0f0
  225.     dc.w    $18e,$0f0
  226.  
  227.     dc.w    $1A2,$F00    ; color17, - COLOR1 degli sprite0/1 -ROSSO
  228.     dc.w    $1A4,$0F0    ; color18, - COLOR2 degli sprite0/1 -VERDE
  229.     dc.w    $1A6,$FF0    ; color19, - COLOR3 degli sprite0/1 -GIALLO
  230.  
  231.     dc.w    $1AA,$FFF    ; color21, - COLOR1 degli sprite2/3 -BIANCO
  232.     dc.w    $1AC,$0BD    ; color22, - COLOR2 degli sprite2/3 -ACQUA
  233.     dc.w    $1AE,$D50    ; color23, - COLOR3 degli sprite2/3 -ARANCIO
  234.  
  235.     dc.w    $1B2,$00F    ; color25, - COLOR1 degli sprite4/5 -BLU
  236.     dc.w    $1B4,$F0F    ; color26, - COLOR2 degli sprite4/5 -VIOLA
  237.     dc.w    $1B6,$BBB    ; color27, - COLOR3 degli sprite4/5 -GRIGIO
  238.  
  239.     dc.w    $1BA,$8E0    ; color29, - COLOR1 degli sprite6/7 -VERDE CH.
  240.     dc.w    $1BC,$a70    ; color30, - COLOR2 degli sprite6/7 -MARRONE
  241.     dc.w    $1BE,$d00    ; color31, - COLOR3 degli sprite6/7 -ROSSO SC.
  242.  
  243. ; da qui iniziano le istruzioni che cambiano la priorita`
  244. ; potete notare che siccome si opera con un playfield normale (non in modo
  245. ; dual playfield) il codice di priorita` e` lo stesso per i bit-planes pari
  246. ; e per i dispari: per esempio il valore $0009 che e` il primo valore
  247. ; che viene scritto in BPLCON2:
  248. ;
  249. ;        5432109876543210
  250. ; $0009=%0000000000001001       potete vedere che:
  251. ;
  252. ; nei bit da 0 a 2 viene scritto %001
  253. ; nei bit da 3 a 5 viene scritto %001, come avevamo detto.
  254. ;
  255. ; potete verificare che la stessa cosa vale per tutti gli altri valori che
  256. ; vengono scritti in BPLCON2
  257.  
  258.  
  259.     dc.w    $104,$0000    ; BPLCON2 - all'inizio tutti gli sprite sotto
  260.  
  261.     dc.w    $7007,$fffe    ; WAIT - attendi la fine della fascia
  262.     dc.w    $104,$0009    ; BPLCON2 - sprites 0,1 sopra e
  263.                 ; sprites 2,3,4,5,6,7 sotto
  264.  
  265.     dc.w    $a007,$fffe    ; WAIT - attendi la fine della fascia
  266.     dc.w    $104,$0012    ; BPLCON2 - sprites 0,1,2,3 sopra e
  267.                 ; sprites 4,5,6,7 sotto
  268.  
  269.     dc.w    $d007,$fffe    ; WAIT - attendi la fine della fascia
  270.     dc.w    $104,$001b    ; BPLCON2 - sprites 0,1,2,3,4,5 sopra e
  271.                 ; sprites 6,7 sotto
  272.  
  273.     dc.w    $ff07,$fffe    ; WAIT - attendi la fine della fascia
  274.     dc.w    $104,$0024    ; BPLCON2 - tutti gli sprites sopra
  275.  
  276.     dc.w    $FFFF,$FFFE    ; Fine della copperlist
  277.  
  278. ;           543210
  279. ; NOTA:    $0  = %000000 - tutti gli sprites sotto
  280. ;    $9  = %001001 - sprites 0,1 sopra,     2,3,4,5,6,7 sotto
  281. ;    $12 = %010010 - sprites 0,1,2,3 sopra,         4,5,6,7 sotto
  282. ;    $1b = %011011 - sprites 0,1,2,3,4,5 sopra,     6,7 sotto
  283. ;    $24 = %100100 - tutti gli sprites sopra
  284.  
  285. ; ************ Ecco gli sprite: OVVIAMENTE in CHIP RAM! ************
  286.  
  287.  ; tabella di riferimento per definire i colori:
  288.  
  289.  
  290.  ; per gli sprite 0 ed 1
  291.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  292.  ;BINARIO 10=COLORE 1 (ROSSO)
  293.  ;BINARIO 01=COLORE 2 (VERDE)
  294.  ;BINARIO 11=COLORE 3 (GIALLO)
  295.  
  296. MIOSPRITE0:        ; lunghezza 13 linee
  297. VSTART0:
  298.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  299. HSTART0:
  300.     dc.b $60    ; Pos. orizzontale (da $40 a $d8)
  301. VSTOP0:
  302.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  303. VHBITS0
  304.     dc.b $00
  305.  dc.w    %0000001111000000,%0111110000111110
  306.  dc.w    %0000111111110000,%1111001110001111
  307.  dc.w    %0011111111111100,%1100010001000011
  308.  dc.w    %0111111111111110,%1000010001000001
  309.  dc.w    %0111111111111110,%1000010001000001
  310.  dc.w    %0011111111111100,%1100010001000011
  311.  dc.w    %0000111111110000,%1111001110001111
  312.  dc.w    %0000001111000000,%0111110000111110
  313.  dc.w    0,0    ; fine sprite
  314.  
  315.  
  316. MIOSPRITE1:        ; lunghezza 13 linee
  317. VSTART1:
  318.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  319. HSTART1:
  320.     dc.b $60+14    ; Pos. orizzontale (da $40 a $d8)
  321. VSTOP1:
  322.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  323.     dc.b $00
  324.  dc.w    %0000001111000000,%0111110000111110
  325.  dc.w    %0000111111110000,%1111000010001111
  326.  dc.w    %0011111111111100,%1100000110000011
  327.  dc.w    %0111111111111110,%1000000010000001
  328.  dc.w    %0111111111111110,%1000000010000001
  329.  dc.w    %0011111111111100,%1100000010000011
  330.  dc.w    %0000111111110000,%1111000111001111
  331.  dc.w    %0000001111000000,%0111110000111110
  332.  dc.w    0,0    ; fine sprite
  333.  
  334.  ; per gli sprite 2 e 3
  335.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  336.  ;BINARIO 10=COLORE 1 (BIANCO)
  337.  ;BINARIO 01=COLORE 2 (ACQUA)
  338.  ;BINARIO 11=COLORE 3 (ARANCIO)
  339.  
  340. MIOSPRITE2:        ; lunghezza 13 linee
  341. VSTART2:
  342.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  343. HSTART2:
  344.     dc.b $60+(14*2)    ; Pos. orizzontale (da $40 a $d8)
  345. VSTOP2:
  346.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  347.     dc.b $00
  348.  dc.w    %0000001111000000,%0111110000111110
  349.  dc.w    %0000111111110000,%1111000111001111
  350.  dc.w    %0011111111111100,%1100001000100011
  351.  dc.w    %0111111111111110,%1000000000100001
  352.  dc.w    %0111111111111110,%1000000111000001
  353.  dc.w    %0011111111111100,%1100001000000011
  354.  dc.w    %0000111111110000,%1111001111101111
  355.  dc.w    %0000001111000000,%0111110000111110
  356.  dc.w    0,0    ; fine sprite
  357.  
  358. MIOSPRITE3:        ; lunghezza 13 linee
  359. VSTART3:
  360.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  361. HSTART3:
  362.     dc.b $60+(14*3)    ; Pos. orizzontale (da $40 a $d8)
  363. VSTOP3:
  364.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  365.     dc.b $00
  366.  dc.w    %0000001111000000,%0111110000111110
  367.  dc.w    %0000111111110000,%1111001111101111
  368.  dc.w    %0011111111111100,%1100000000100011
  369.  dc.w    %0111111111111110,%1000000111100001
  370.  dc.w    %0111111111111110,%1000000000100001
  371.  dc.w    %0011111111111100,%1100000000100011
  372.  dc.w    %0000111111110000,%1111001111101111
  373.  dc.w    %0000001111000000,%0111110000111110
  374.  dc.w    0,0    ; fine sprite
  375.  
  376.  ; per gli sprite 4 e 5
  377.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  378.  ;BINARIO 10=COLORE 1 (BLU)
  379.  ;BINARIO 01=COLORE 2 (VIOLA)
  380.  ;BINARIO 11=COLORE 3 (GRIGIO)
  381.  
  382. MIOSPRITE4:        ; lunghezza 13 linee
  383. VSTART4:
  384.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  385. HSTART4:
  386.     dc.b $60+(14*4)    ; Pos. orizzontale (da $40 a $d8)
  387. VSTOP4:
  388.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  389.     dc.b $00
  390.  dc.w    %0000001111000000,%0111110000111110
  391.  dc.w    %0000111111110000,%1111001001001111
  392.  dc.w    %0011111111111100,%1100001001000011
  393.  dc.w    %0111111111111110,%1000001111000001
  394.  dc.w    %0111111111111110,%1000000001000001
  395.  dc.w    %0011111111111100,%1100000001000011
  396.  dc.w    %0000111111110000,%1111000001001111
  397.  dc.w    %0000001111000000,%0111110000111110
  398.  dc.w    0,0    ; fine sprite
  399.  
  400. MIOSPRITE5:        ; lunghezza 13 linee
  401. VSTART5:
  402.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  403. HSTART5:
  404.     dc.b $60+(14*5)    ; Pos. orizzontale (da $40 a $d8)
  405. VSTOP5:
  406.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  407.     dc.b $00
  408.  dc.w    %0000001111000000,%0111110000111110
  409.  dc.w    %0000111111110000,%1111001111001111
  410.  dc.w    %0011111111111100,%1100001000000011
  411.  dc.w    %0111111111111110,%1000001111000001
  412.  dc.w    %0111111111111110,%1000000001000001
  413.  dc.w    %0011111111111100,%1100000001000011
  414.  dc.w    %0000111111110000,%1111001111001111
  415.  dc.w    %0000001111000000,%0111110000111110
  416.  dc.w    0,0    ; fine sprite
  417.  
  418.  ; per gli sprite 6 e 7
  419.  ;BINARIO 00=COLORE 0 (TRASPARENTE)
  420.  ;BINARIO 10=COLORE 1 (VERDE CHIARO)
  421.  ;BINARIO 01=COLORE 2 (MARRONE)
  422.  ;BINARIO 11=COLORE 3 (ROSSO SCURO)
  423.  
  424. MIOSPRITE6:        ; lunghezza 13 linee
  425. VSTART6:
  426.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  427. HSTART6:
  428.     dc.b $60+(14*6)    ; Pos. orizzontale (da $40 a $d8)
  429. VSTOP6:
  430.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  431.     dc.b $00
  432.  dc.w    %0000001111000000,%0111110000111110
  433.  dc.w    %0000111111110000,%1111001111001111
  434.  dc.w    %0011111111111100,%1100001000000011
  435.  dc.w    %0111111111111110,%1000001111000001
  436.  dc.w    %0111111111111110,%1000001001000001
  437.  dc.w    %0011111111111100,%1100001001000011
  438.  dc.w    %0000111111110000,%1111001111001111
  439.  dc.w    %0000001111000000,%0111110000111110
  440.  dc.w    0,0    ; fine sprite
  441.  
  442. MIOSPRITE7:        ; lunghezza 13 linee
  443. VSTART7:
  444.     dc.b $60    ; Pos. verticale (da $2c a $f2)
  445. HSTART7:
  446.     dc.b $60+(14*7)    ; Pos. orizzontale (da $40 a $d8)
  447. VSTOP7:
  448.     dc.b $68    ; $60+13=$6d    ; fine verticale.
  449.     dc.b $00
  450.  dc.w    %0000001111000000,%0111110000111110
  451.  dc.w    %0000111111110000,%1111001111001111
  452.  dc.w    %0011111111111100,%1100000001000011
  453.  dc.w    %0111111111111110,%1000000001000001
  454.  dc.w    %0111111111111110,%1000000001000001
  455.  dc.w    %0011111111111100,%1100000001000011
  456.  dc.w    %0000111111110000,%1111000001001111
  457.  dc.w    %0000001111000000,%0111110000111110
  458.  dc.w    0,0    ; fine sprite
  459.  
  460.     SECTION    PLANEVUOTO,BSS_C    ; Il bitplane che usiamo
  461.  
  462. PIC:
  463.     incbin    "priorita.raw"    ; il disegno
  464.  
  465.     end
  466.  
  467. In questo listato mostriamo come cambiare le priorita` degli sprites rispetto
  468. ai playfield. Innanzitutto notiamo che gli sprite appaiono sempre al di sopra
  469. del colore zero. Per gli altri colori la priorita e` controllata dal registro
  470. BPLCON2. E` possibile controllare la priorita` individualmente per i piani pari
  471.  e per quelli dispari. Questo fatto e` molto importante quando si usa il modo
  472. dual playfield. Quando, come in questo esempio si usa invece il modo normale
  473. si mettono gli stessi livelli di priorita` sia per i planes pari che per quelli
  474. dispari. Per vedere quali sono i livelli di priorita` consultate la lezione.
  475.  
  476. Per cabiare il livello di priorita` piu` volte nella stessa schermata, usiamo
  477. il copper che ci permette di cambiare priorita` quando gli sprites si trovano
  478. tra una fascia e l'altra. Ecco i valori per il $dff104 (BPLCON2):
  479.  
  480.            543210
  481.      $0  = %000000 - tutti gli sprites sotto
  482.     $9  = %001001 - sprites 0,1 sopra,     2,3,4,5,6,7 sotto
  483.     $12 = %010010 - sprites 0,1,2,3 sopra,         4,5,6,7 sotto
  484.     $1b = %011011 - sprites 0,1,2,3,4,5 sopra,     6,7 sotto
  485.     $24 = %100100 - tutti gli sprites sopra
  486.  
  487.